<?php
/**
 * index.php
 * 
 * @author Javier Pérez
 * @copyright GPL v3
 * @version 0.1
 */

/**
 * Se añade el path a la librería Zend Framework
 * 
 * Esto puede hacerse por apache config:
 * php_value include_path "/www/zendframework/lib"
 */
ini_set('include_path', '/www/aseregee/lib');

/**
 * Autocargador de clases Zend
 *
 * Esta función es llamada cada vez que se intenta acceder
 * a una clase que no ha sido cargada.
 * 
 * @author Javier Pérez
 * @version 0.1
 * @todo Esto puede ir en un boot.php en /www
 * @todo Existe Zend_Loader::loadClass()
 * 
 * @param string $class Clase a la que se intenta acceder
 */
function __autoload($class) {
	$fp = array();
	// Se intenta cargar un modelo
	$fp[] = "../app/models/$class.php";
	// Se intenta con una librería
	$fp[] = '../lib/' . implode('/', explode('_', $class)) . '.php';
	
	foreach ($fp as $filepath) {
		if (is_file($filepath)) {
			include_once $filepath;
			return;
		}
	}
	return;
}

// Se obtiene la configuración
// TODO: Obtener 'development' si se entra con el dominio dev.aseregee.com
$config = new Zend_Config_Ini('../config.ini', 'production');

// Setting up Zend Registry
$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS);
Zend_Registry::setInstance($registry);

// Init DB manager
try {
	// Database
	$db = Zend_Db::factory($config->database);
	// Conexión
	$db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    // perhaps a failed login credential, or perhaps the RDBMS is not running
    die('Error al conectar a la base de datos.');
} catch (Zend_Exception $e) {
    // perhaps factory() failed to load the specified Adapter class
    die('Error al cargar los datos de conexión.');
}
// Adaptador por defecto para los modelos
Zend_Db_Table_Abstract::setDefaultAdapter($db);
// Save $db in registry
$registry->db = $db;

// Page view
$page = new Zend_View();
$page->addScriptPath('../app/views/scripts');
$registry->page = $page;
$registry->page_template = 'page.phtml';

// Front
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory('../app/controllers/');
// Pedimos que devuelva el resultado
$front->returnResponse(true);
// Ejecutamos ZF y obtenemos la respuesta
$response = $front->dispatch();


// Devolvemos la salida a la vista principal (page.phtml) en $this->content
$page->content = $response->getBody();
// Mostramos el resultado
echo $page->render($registry->page_template);
